package com.lin.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonConfig {

    /**
     * 创建并配置Jackson ObjectMapper Bean
     * 此配置：
     * 1. 注册JavaTimeModule用于正确处理Java 8时间类型（如LocalDateTime）
     * 2. 保持默认配置的其他序列化/反序列化行为
     *
     * @return ObjectMapper 配置了Java时间模块的ObjectMapper实例，
     * 适合需要处理Java 8日期时间类型的场景
     * 注意：当需要多个不同配置的ObjectMapper时，建议：
     * - 使用@Primary标注主要实例
     * - 使用@ConditionalOnMissingBean条件注解
     * - 通过不同Bean名称区分实例
     */
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        // 注册Java时间模块
        // 解决LocalDateTime等Java 8时间类型的序列化问题
        objectMapper.registerModule(new JavaTimeModule());
        return objectMapper;
    }

}
